package ynu.edu.common.handler;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class RetryHandler {

    /**
     * 处理可恢复异常的重试逻辑
     *
     * @param deliveryCount 当前重试次数（从消息头 x-delivery-count 获取）
     * @param maxRetries    最大允许重试次数
     * @param e             异常对象
     * @return 是否需要重新入队（true=重试，false=进入死信队列）
     */
    public static boolean shouldRetry(Integer deliveryCount, int maxRetries, Exception e) {
        int currentAttempt = deliveryCount == null ? 1 : deliveryCount + 1;
        if (currentAttempt > maxRetries) {
            log.error("已达最大重试次数{}，进入死信队列", maxRetries, e);
            return false;
        } else {
            log.warn("第{}次重试", currentAttempt, e);
            return true;
        }
    }
}